In-line FIX packet translator

ABSTRACT

Certain embodiments provide systems and methods to perform in-line translation of message content according to FIX protocol variants in a trading system. An example method includes receiving, at a computing device, a message formatted according to a FIX protocol, the message including message content and a message wrapper, the message wrapper providing session and delivery information for the message to a target. The example method includes performing in-line translation of the message content of the received message to adjust the message content according to a predefined set of rules without affecting the message wrapper (with the possible exception of the message size) and message routing session. The example method includes facilitating routing of the message to the target based on the message wrapper.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.15/218,649, filed on Jul. 25, 2016, now U.S. Pat. No. 9,830,658, whichis a continuation of U.S. patent application Ser. No. 13/732,064, filedon Dec. 31, 2012, now U.S. Pat. No. 9,426,245, the entire contents ofeach of which are incorporated herein by reference for all purposes.

BACKGROUND

An electronic trading system generally includes a trading device incommunication with an electronic exchange. The electronic exchange sendsinformation about a market, such as prices and quantities, to thetrading device. The trading device sends messages, such as messagesrelated to orders, to the electronic exchange. The electronic exchangeattempts to match quantity of an order with quantity of one or morecontra-side orders.

The Financial Information eXchange (FIX) protocol is a series ofmessaging specifications for electronic communication of trade-relatedmessages. The FIX protocol is used as a messaging standard used tofacilitate electronic trade-related transactions. Rather than software,the FIX protocol is a specification around which software developers cancreate commercial and/or open-source software, for example.

The FIX protocol enables integration of different financial systems byestablishing a standardized language. That is, the FIX protocol providesa document that describes a “language” for trading applications to speakwith each other.

The FIX protocol defines a set of data fields (referred to as tags) thatdescribe financial transactions. However, a single piece of data can beinterpreted in many different ways depending upon client, exchange, etc.For example, tag 55 represents the symbol of a tradeable instrument.Some traders use the Bloomberg symbol, some use the Reuters symbol, someuse custom names, and some use an exchange-defined symbol, for example.Thus, in many instances, devices communicating in FIX may need to routemessages through an external, third party converter to enable devices totalk to each other regarding what is, in fact, the same piece of data.

BRIEF DESCRIPTION OF THE FIGURES

Certain embodiments are disclosed with reference to the followingdrawings.

FIG. 1 illustrates a block diagram representative of an exampleelectronic trading system in which certain embodiments may be employed.

FIG. 2 illustrates a block diagram of another example electronic tradingsystem in which certain embodiments may be employed.

FIG. 3 illustrates a block diagram of an example computing device whichmay be used to implement the disclosed embodiments.

FIG. 4 depicts an example data message arranged according to the FIXprotocol.

FIG. 5 depicts an example message exchange sequence between two devicesusing a third party translator.

FIG. 6 shows an example translation of message content from a sender toa recipient via an in-line translator.

FIG. 7 illustrates an example trading system in which a gateway with anin-line translator is arranged between an exchange and a plurality ofFIX clients.

FIG. 8 illustrates a flow diagram of an example method to dynamicallyadjust or translate message packet content without affecting a messagepacket wrapper.

FIG. 9 illustrates a block diagram representative of an example in-linetranslator to facilitate in-line translation or modification of messagecontent without affecting the message wrapper.

Certain embodiments will be better understood when read in conjunctionwith the provided figures, which illustrate examples. It should beunderstood, however, that the embodiments are not limited to thearrangements and instrumentality shown in the attached figures.

DETAILED DESCRIPTION

Different devices in a trading system may employ variants of the FIXprotocol in which to define messages being exchanged to place orders,provide status, etc. While these variants exist, it is important fordevices to be able to understand each other, particularly incommunication between a trading device and an exchange. While anexternal translator can be inserted into the trading system, theexternal, third party translator disrupts the message sequence andaffects a message's “envelope” used to deliver the message to anintended target, as well as the content of the message which is to betranslated.

Embodiments disclosed herein recognize that messages must be readable byrecipient while trackable by sender without appreciable increase indelivery latency that may adversely impact a trade order. Unlike priortrading systems and external translators, embodiments disclosed hereinaccommodate a plurality of FIX variants in communication between devicesin an electronic trading system. Embodiments disclosed herein provide anin-line translator to adjust FIX content in a message while maintainingan original message envelope and session information, with the possibleexception of the message size.

Although the description discloses embodiments including, among othercomponents, software executed on hardware, it should be noted that theembodiments are merely illustrative and should not be considered aslimiting. For example, it is contemplated that any or all of thesehardware and software components may be embodied exclusively inhardware, exclusively in software, exclusively in firmware, or in anycombination of hardware, software, and/or firmware. Accordingly, certainembodiments may be implemented in other ways.

Examples described herein enable a method including receiving, at acomputing device, a message formatted according to a FIX protocol, themessage including message content and a message wrapper, the messagewrapper providing session and delivery information for the message to atarget. The example method includes performing in-line translation ofthe message content of the received message to adjust the messagecontent according to a predefined set of rules without affecting themessage wrapper (with the possible exception of the message size) andmessage routing session. The example method includes facilitatingrouting of the message to the target based on the message wrapper.

Examples described herein enable a system including a computing deviceconfigured to receive a message formatted according to a FIX protocol.The message includes message content and a message wrapper. The messagewrapper provides session and delivery information for the message to atarget. The example computing device is configured to perform in-linetranslation of the message content of the received message to adjust themessage content according to a predefined set of rules without affectingthe message wrapper (with the possible exception of the message size)and message routing session and to facilitate routing of the message tothe target based on the message wrapper.

Examples described herein enable a tangible computer-readable storagemedium comprising instructions that, when executed, cause a computingdevice to at least receive a message formatted according to a FIXprotocol, the message including message content and a message wrapper,the message wrapper providing session and delivery information for themessage to a target; perform an in-line translation of the messagecontent of the received message to adjust the message content accordingto a predefined set of rules without affecting the message wrapper (withthe possible exception of the message size) and message routing session;and facilitate routing of the message to the target based on the messagewrapper.

Although this description discloses embodiments including, among othercomponents, software executed on hardware, it should be noted that theembodiments are merely illustrative and should not be considered aslimiting. For example, it is contemplated that any or all of thesehardware and software components may be embodied exclusively inhardware, exclusively in software, exclusively in firmware, or in anycombination of hardware, software, and/or firmware. Accordingly, certainembodiments may be implemented in other ways.

I. Brief Description of Certain Embodiments

Certain embodiments provide a method including detecting, using acomputing device, a current position of a cursor with respect to atrading interface. The example method includes evaluating, using thecomputing device, one or more candidate locations in the tradinginterface for a next cursor position based on at least one rule and atleast one condition. The example method includes facilitating, using thecomputing device, adjustment of the trading interface based on the oneor more candidate locations to enlarge at least one of the one or morecandidate locations in the trading interface.

Certain embodiments provide a system including a cursor position locatorto detect a current position of a cursor with respect to a tradinginterface. The example system also includes an interface adjustmentprocessor to evaluate one or more candidate locations in the tradinginterface for a next cursor position based on at least one rule and atleast one condition and facilitate adjustment of the trading interfacebased on the one or more candidate locations to enlarge at least one ofthe one or more candidate locations in the trading interface.

Certain embodiments provide a tangible computer-readable storage mediumcomprising instructions that, when executed, cause a computing device toat least detect a current position of a cursor with respect to a tradinginterface. The example instructions also cause the computing device toat least evaluate one or more candidate locations in the tradinginterface for a next cursor position based on at least one rule and atleast one condition. The example instructions further cause thecomputing device to at least facilitate adjustment of the tradinginterface based on the one or more candidate locations to enlarge atleast one of the one or more candidate locations in the tradinginterface.

II. Example Electronic Trading System

FIG. 1 illustrates a block diagram representative of an exampleelectronic trading system 100 in which certain embodiments may beemployed. The system 100 includes a trading device 110, a gateway 120,and an exchange 130. The trading device 110 is in communication with thegateway 120. The gateway 120 is in communication with the exchange 130.As used herein, the phrase “in communication” encompasses directcommunication and/or indirect communication through one or moreintermediary components. The exemplary electronic trading system 100depicted in FIG. 1 may be in communication with additional components,subsystems, and elements to provide additional functionality andcapabilities without departing from the teaching and disclosure providedherein.

In operation, the trading device 110 may receive market data from theexchange 130 through the gateway 120. A user may utilize the tradingdevice 110 to monitor this market data and/or base a decision to send anorder message to buy or sell one or more tradeable objects to theexchange 130.

Market data may include data about a market for a tradeable object. Forexample, market data may include the inside market, market depth, lasttraded price (“LTP”), a last traded quantity (“LTQ”), or a combinationthereof. The inside market is the lowest available ask price (bestoffer) and the highest available bid price (best bid) in the market fora particular tradable object at a particular point in time (since theinside market may vary over time). Market depth refers to quantitiesavailable at the inside market and at other prices away from the insidemarket. Due to the quantity available, there may be “gaps” in marketdepth.

A tradeable object is anything which may be traded. For example, acertain quantity of the tradeable object may be bought or sold for aparticular price. A tradeable object may include, for example, financialproducts, stocks, options, bonds, future contracts, currency, warrants,funds derivatives, securities, commodities, swaps, interest rateproducts, index-based products, traded events, goods, or a combinationthereof. A tradeable object may include a product listed and/oradministered by an exchange (for example, the exchange 130), a productdefined by the user, a combination of real or synthetic products, or acombination thereof. There may be a synthetic tradeable object thatcorresponds and/or is similar to a real tradeable object.

An order message is a message that includes a trade order. A trade ordermay be, for example, a command to place an order to buy or sell atradeable object, a command to initiate managing orders according to adefined trading strategy, a command to change or cancel a previouslysubmitted order (for example, modify a working order), an instruction toan electronic exchange relating to an order, or a combination thereof.

The trading device 110 may include one or more electronic computingplatforms. For example, the trading device 110 may include a desktopcomputer, hand-held device, laptop, server, a portable computing device,a trading terminal, an embedded trading system, a workstation, analgorithmic trading system such as a “black box” or “grey box” system,cluster of computers, or a combination thereof. As another example, thetrading device 110 may include a single or multi-core processor incommunication with a memory or other storage medium configured toaccessibly store one or more computer programs, applications, libraries,computer readable instructions, and the like, for execution by theprocessor.

As used herein, the phrases “configured to” and “adapted to” encompassthat an element, structure, or device has been modified, arranged,changed, or varied to perform a specific function or for a specificpurpose.

By way of example, the trading device 110 may be implemented as apersonal computer running a copy of X_TRADER®, an electronic tradingplatform provided by Trading Technologies International, Inc. ofChicago, Ill. (“Trading Technologies”). As another example, the tradingdevice 110 may be a server running a trading application providingautomated trading tools such as ADL™, AUTOSPREADER®, and/or AUTOTRADER™,also provided by Trading Technologies. In yet another example, thetrading device 110 may include a trading terminal in communication witha server, where collectively the trading terminal and the server are thetrading device 110.

The trading device 110 is generally owned, operated, controlled,programmed, configured, or otherwise used by a user. As used herein, thephrase “user” may include, but is not limited to, a human (for example,a trader), trading group (for example, group of traders), or anelectronic trading device (for example, an algorithmic trading system).One or more users may be involved in the ownership, operation, control,programming, configuration, or other use, for example.

The trading device 110 may include one or more trading applications. Asused herein, a trading application is an application that facilitates orimproves electronic trading. A trading application provides one or moreelectronic trading tools. For example, a trading application stored by atrading device may be executed to arrange and display market data in oneor more trading windows. In another example, a trading application mayinclude an automated spread trading application providing spread tradingtools. In yet another example, a trading application may include analgorithmic trading application that automatically processes analgorithm and performs certain actions, such as placing an order,modifying an existing order, deleting an order. In yet another example,a trading application may provide one or more trading screens. A tradingscreen may provide one or more trading tools that allow interaction withone or more markets. For example, a trading tool may allow a user toobtain and view market data, set order entry parameters, submit ordermessages to an exchange, deploy trading algorithms, and/or monitorpositions while implementing various trading strategies. The electronictrading tools provided by the trading application may always beavailable or may be available only in certain configurations oroperating modes of the trading application.

A trading application may include computer readable instructions thatare stored in a computer readable medium and executable by a processor.A computer readable medium may include various types of volatile andnon-volatile storage media, including, for example, random accessmemory, read-only memory, programmable read-only memory, electricallyprogrammable read-only memory, electrically erasable read-only memory,flash memory, any combination thereof, or any other tangible datastorage device. As used herein, the term non-transitory or tangiblecomputer readable medium is expressly defined to include any type ofcomputer readable storage media and to exclude propagating signals.

One or more components or modules of a trading application may be loadedinto the computer readable medium of the trading device 110 from anothercomputer readable medium. For example, the trading application (orupdates to the trading application) may be stored by a manufacturer,developer, or publisher on one or more CDs or DVDs, which are thenloaded onto the trading device 110 or to a server from which the tradingdevice 110 retrieves the trading application. As another example, thetrading device 110 may receive the trading application (or updates tothe trading application) from a server, for example, via the Internet oran internal network. The trading device 110 may receive the tradingapplication or updates when requested by the trading device 110 (forexample, “pull distribution”) and/or un-requested by the trading device110 (for example, “push distribution”).

The trading device 110 may be adapted to send order messages. Forexample, the order messages may be sent to through the gateway 120 tothe exchange 130. As another example, the trading device 110 may beadapted to send order messages to a simulated exchange in a simulationenvironment which does not effectuate real-world trades.

The order messages may be sent at the request of a user. For example, atrader may utilize the trading device 110 to send an order message ormanually input one or more parameters for a trade order (for example, anorder price and/or quantity). As another example, an automated tradingtool provided by a trading application may calculate one or moreparameters for a trade order and automatically send the order message.In some instances, an automated trading tool may prepare the ordermessage to be sent but not actually send it without confirmation from auser.

An order message may be sent in one or more data packets or through ashared memory system. For example, an order message may be sent from thetrading device 110 to the exchange 130 through the gateway 120. Thetrading device 110 may communicate with the gateway 120 using a localarea network, a wide area network, a wireless network, a virtual privatenetwork, a T1 line, a T3 line, an integrated services digital network(“ISDN”) line, a point-of-presence, the Internet, and/or a shared memorysystem, for example.

The gateway 120 may include one or more electronic computing platforms.For example, the gateway 120 may implemented as one or more desktopcomputer, hand-held device, laptop, server, a portable computing device,a trading terminal, an embedded trading system, workstation with asingle or multi-core processor, an algorithmic trading system such as a“black box” or “grey box” system, cluster of computers, or anycombination thereof.

The gateway 120 may facilitate communication. For example, the gateway120 may perform protocol translation for data communicated between thetrading device 110 and the exchange 130. The gateway 120 may process anorder message received from the trading device 110 into a data formatunderstood by the exchange 130, for example. Similarly, the gateway 120may transform market data in an exchange-specific format received fromthe exchange 130 into a format understood by the trading device 110, forexample.

The gateway 120 may include a trading application, similar to thetrading applications discussed above, that facilitates or improveselectronic trading. For example, the gateway 120 may include a tradingapplication that tracks orders from the trading device 110 and updatesthe status of the order based on fill confirmations received from theexchange 130. As another example, the gateway 120 may include a tradingapplication that coalesces market data from the exchange 130 andprovides it to the trading device 110. In yet another example, thegateway 120 may include a trading application that provides riskprocessing, calculates implieds, handles order processing, handlesmarket data processing, or a combination thereof.

In certain embodiments, the gateway 120 communicates with the exchange130 using a local area network, a wide area network, a virtual privatenetwork, a T1 line, a T3 line, an ISDN line, a point-of-presence, theInternet, and/or a shared memory system, for example.

The exchange 130 may be owned, operated, controlled, or used by anexchange entity. Example exchange entities include the CME Group, theLondon International Financial Futures and Options Exchange, theIntercontinental Exchange, and Eurex. The exchange 130 may include anelectronic matching system, such as a computer, server, or othercomputing device, which is adapted to allow tradeable objects, forexample, offered for trading by the exchange, to be bought and sold. Theexchange 130 may include separate entities, some of which list and/oradminister tradeable objects and others which receive and match orders,for example. The exchange 130 may include an electronic communicationnetwork (“ECN”), for example.

The exchange 130 may be an electronic exchange. The exchange 130 isadapted to receive order messages and match contra-side trade orders tobuy and sell tradeable objects. Unmatched trade orders may be listed fortrading by the exchange 130. The trade orders may include trade ordersreceived from the trading device 110 or other devices in communicationwith the exchange 130, for example. For example, typically the exchange130 will be in communication with a variety of other trading devices(which may be similar to trading device 110) which also provide tradeorders to be matched.

The exchange 130 is adapted to provide market data. Market data may beprovided in one or more messages or data packets or through a sharedmemory system. For example, the exchange 130 may publish a data feed tosubscribing devices, such as the trading device 110 or gateway 120. Thedata feed may include market data.

The system 100 may include additional, different, or fewer components.For example, the system 100 may include multiple trading devices,gateways, and/or exchanges. In another example, the system 100 mayinclude other communication devices, such as middleware, firewalls,hubs, switches, routers, servers, exchange-specific communicationequipment, modems, security managers, and/or encryption/decryptiondevices.

III. Expanded Example Electronic Trading System

FIG. 2 illustrates a block diagram of another example electronic tradingsystem 200 in which certain embodiments may be employed. In thisexample, a trading device 210 a is in communication with an exchange 230a through a gateway 220 a. The following discussion mainly focuses onthe trading device 210 a, gateway 220 a, and the exchange 230 a.However, the trading device 210 a may also be connected to andcommunicate with any number of gateways 220 n connected to exchanges 230n. The communication between the trading device 110 a and otherexchanges 230 n may be the same, similar, or different than thecommunication between the trading device 210 a and exchange 230 a.Generally, each exchange has its own preferred techniques and/or formatsfor communicating with a trading device, a gateway, the user, or anotherexchange.

The trading device 210 a, which may be similar to the trading device 110in FIG. 1, may include a server 212 a in communication with a tradingterminal 214 a. The server 212 a may be located geographically closer tothe gateway 120 than the trading terminal 214 a. As a result, the server212 a latency benefits that are not afforded to the trading terminal 214a. In operation, the trading terminal 214 a may provide a trading screento a user and communicate commands to the server 212 a for furtherprocessing. For example, a trading algorithm may be deployed to theserver 212 a for execution based on market data. The server 212 a mayexecute the trading algorithm without further input from the user. Inanother example, the server 212 a may include a trading applicationproviding automated trading tools and communicate back to the tradingterminal 214 a. The trading device 210 a may include, additional,different, or fewer components.

The trading device 210 a may communicate with the gateway 220 a usingone or more communication networks. As used herein, a communicationnetwork is any network, including the Internet, which facilitates orenables communication between, for example, the trading device 210 a,the gateway 220 a and the exchange 220 a. For example, as shown in FIG.2, the trading device 210 a may communicate with the gateway 220 aacross a multicast communication network 202 a. The data on the network202 a may be logically separated by subject (for example, prices,orders, or fills). As a result, the server 212 a and trading terminal214 a can subscribe to and receive data (for example, data relating toprices, orders, or fills) depending on their individual needs.

The gateway 220 a, which may be similar to the gateway 120 of FIG. 1,may include a price server 222 a, order server 224 a, and fill server226 a. The gateway 220 a may include additional, different, or fewercomponents. The price server 222 a may process price data. Price dataincludes data related to a market for one or more tradeable objects. Theorder server 224 a may process order data. Order data is data related toa user's trade orders. For example, order data may include ordermessages, confirmation messages, or other types of messages. The fillserver collects and provides fill data. Fill data includes data relatingto one or more fills of trade orders. For example, the fill server 226 amay provide a record of trade orders, which have been routed through theorder server 224 a, that have and have not been filled. The servers 222a, 224 a, 226 a may run on the same machine or separate machines.

The gateway 220 a may communicate with the exchange 230 a using one ormore communication networks. For example, as shown in FIG. 2, there maybe two communication networks connecting the gateway 220 a and theexchange 230 a. The network 204 a may be used to communicate market datato the price server 222 a. In some instances, the exchange 230 a mayinclude this data in a data feed that is published to subscribingdevices. The network 206 a may be used to communicate order data.

The exchange 230 a, which may be similar to the exchange 130 of FIG. 1,may include an order book 232 a and a matching engine 234 a. Theexchange 230 a may include additional, different, or fewer components.The order book 232 a is a database that includes data relating tounmatched quantity of trade orders. For example, an order book mayinclude data relating to a market for a tradeable object, such as theinside market, market depth at various price levels, the last tradedprice, and the last traded quantity. The matching engine 234 a may matchcontra-side bids and offers. For example, the matching engine 234 a mayexecute one or more matching algorithms that match contra-side bids andoffers. A sell order is contra-side to a buy order with the same price.Similarly, a buy order is contra-side to a sell order with the sameprice.

In operation, the exchange 230 a may provide price data from the orderbook 232 a to the price server 222 a and order data and/or fill datafrom the matching engine 234 a to the order server 224 a. Servers 222 a,224 a, 226 a may translate and communicate this data back to the tradingdevice 210 a. The trading device 210 a, for example, using a tradingapplication, may process this data. For example, the data may bedisplayed to a user. In another example, the data may be utilized in atrading algorithm to determine whether a trade order should be submittedto the exchange 230 a. The trading device 210 a may prepare and send anorder message to the exchange 230 a.

In certain embodiments, the gateway 220 a is part of the trading device210 a. For example, the components of the gateway 220 a may be part ofthe same computing platform as the trading device 210 a. As anotherexample, the functionality of the gateway 220 a may be performed bycomponents of the trading device 210 a. In certain embodiments, thegateway 220 a is not present. Such an arrangement may occur when thetrading device 210 a does not need to utilize the gateway 220 a tocommunicate with the exchange 230 a, for example. For example, if thetrading device 210 a has been adapted to communicate directly with theexchange 230 a.

Additional trading devices 210 b-210 e, which are similar to tradingdevice 210 a, may be connected to one or more of the gateways 220 a-220n and exchanges 230 a-230 n. Furthermore, additional gateways, similarto the gateway 220 a, may be in communication with multiple exchanges,similar to the exchange 230 a. Each gateway may be in communication withone or more different exchanges, for example. Such an arrangement may,for example, allow one or more trading devices 210 a to trade at morethan one exchange (and/or provide redundant connections to multipleexchanges).

IV. Example Computing Device

FIG. 3 illustrates a block diagram of an example computing device 300which may be used to implement the disclosed embodiments. The tradingdevice 110 of FIG. 1 may include one or more computing devices 300, forexample. The gateway 120 of FIG. 1 may include one or more computingdevices 300, for example. The exchange 130 of FIG. 1 may include one ormore computing devices 300, for example.

The computing device 300 includes a communication network 310, aprocessor 312, a memory 314, an interface 316, an input device 318, andan output device 320. The computing device 300 may include additional,different, or fewer components. For example, multiple communicationnetworks, multiple processors, multiple memory, multiple interfaces,multiple input devices, multiple output devices, or any combinationthereof, may be provided. As another example, the computing device 300may not include an input device 318 or output device 320.

As shown in FIG. 3, the computing device 300 may include a processor 312coupled to a communication network 310. The communication network 310may include a communication bus, channel, electrical or optical network,circuit, switch, fabric, or other mechanism for communicating databetween components in the computing device 300. The communicationnetwork 310 may be communicatively coupled with and transfer databetween any of the components of the computing device 300.

The processor 312 may be any suitable processor, processing unit, ormicroprocessor. The processor 312 may include one or more generalprocessors, digital signal processors, application specific integratedcircuits, field programmable gate arrays, analog circuits, digitalcircuits, programmed processors, and/or combinations thereof, forexample. The processor 312 may be a single device or a combination ofdevices, such as one or more devices associated with a network ordistributed processing. Any processing strategy may be used, such asmulti-processing, multi-tasking, parallel processing, and/or remoteprocessing. Processing may be local or remote and may be moved from oneprocessor to another processor. In certain embodiments, the computingdevice 300 is a multi-processor system and, thus, may include one ormore additional processors which are communicatively coupled to thecommunication network 310.

The processor 312 may be operable to execute logic and other computerreadable instructions encoded in one or more tangible media, such as thememory 314. As used herein, logic encoded in one or more tangible mediaincludes instructions which may be executable by the processor 312 or adifferent processor. The logic may be stored as part of software,hardware, integrated circuits, firmware, and/or micro-code, for example.The logic may be received from an external communication device via acommunication network such as the network 340. The processor 312 mayexecute the logic to perform the functions, acts, or tasks illustratedin the figures or described herein.

The memory 314 may be one or more tangible media, such as computerreadable storage media, for example. Computer readable storage media mayinclude various types of volatile and non-volatile storage media,including, for example, random access memory, read-only memory,programmable read-only memory, electrically programmable read-onlymemory, electrically erasable read-only memory, flash memory, anycombination thereof, or any other tangible data storage device. As usedherein, the term non-transitory or tangible computer readable medium isexpressly defined to include any type of computer readable medium and toexclude propagating signals. The memory 314 may include any desired typeof mass storage device including hard disk drives, optical media,magnetic tape or disk, etc.

The memory 314 may include one or more memory devices. For example, thememory 314 may include local memory, a mass storage device, volatilememory, non-volatile memory, or a combination thereof. The memory 314may be adjacent to, part of, programmed with, networked with, and/orremote from processor 312, so the data stored in the memory 314 may beretrieved and processed by the processor 312, for example. The memory314 may store instructions which are executable by the processor 312.The instructions may be executed to perform one or more of the acts orfunctions described herein or shown in the figures.

The memory 314 may store a trading application 330. In certainembodiments, the trading application 330 may be accessed from or storedin different locations. The processor 312 may access the tradingapplication 330 stored in the memory 314 and execute computer-readableinstructions included in the trading application 330.

In certain embodiments, during an installation process, the tradingapplication may be transferred from the input device 318 and/or thenetwork 340 to the memory 314. When the computing device 300 is runningor preparing to run the trading application 330, the processor 312 mayretrieve the instructions from the memory 314 via the communicationnetwork 310.

V. Example In-Line Packet Translator

Trade order and/or other messages can be transmitted between clientdevices (e.g., a trading device, an exchange, a gateway, etc.) accordingto a transmission protocol, such as the FIX protocol. While the FIXprotocol is a standard, each user often has its own dialect or variantof FIX. Using the FIX protocol, a data message 400 can be organized asillustrated in FIG. 4 including content 410 and a message wrapper orenvelope 420. While the message wrapper 420 may be standard according toFIX or other network communication protocol, the message content 410varies according to sender.

Using the FIX protocol, a client device can transmit and/or receivetrading and/or other financial transaction data. However, different FIXclient devices, such as trading systems 100 and 200, and/or tradingsystem components, such as trading devices 110 and 210 a, gateways 120and 220 a-220 n, exchanges 130 and 230 a-230 n, and computing device300, etc., may communicate using different variants of or with differentmodifications to the FIX protocol. To analogize, one client device maybe communicating in a first Spanish dialect and another client devicemay be communicating in a second Spanish dialect such that the clientdevices cannot understand messages from one another. Just because bothdevices utilize the FIX protocol does not necessarily indicate that theycan understand messages from one another. A dialect or variation mayneed to be determined first. Typically, large staffs of people areinvolved in translating message content to accommodate FIXcommunication.

A third party device (such as UL Bridge provided by ULLINK, Inc. of NewYork, N.Y. (“ULLINK”)) can be provided between FIX client devices toreceive and translate messages, but the third party device must involveboth client devices to identify and resolve communication problems. Forexample, if confusion or other error arises over communication ofmessages between a trading device and an exchange, both the tradingdevice operator as well as exchange personnel are involved in resolvingthe error along with the provider of the third party translator device.Such three-party collaboration can result in a large commitment of timeand resources to figure out who translated what, when, and how, forexample.

In addition, in FIX or other networking protocol, a packet identifier(ID) or sequence number is used to identify and track message packets.For example, if a trading device and an exchange are communicating withrespect to an order, the trading device may send a message with a firstsequence number which, in turn, may be translated by a third partydevice and assigned a second sequence number. The translated message isthen provided to the exchange with the second sequence number differentfrom the first sequence number. Thus, the trading device and theexchange are having two different “conversations”, especially if thethird party adapter is being used. The communicating devices must keeptrack of the differences in message sequence number in order to processmessages that each device receives from the other.

Different devices may generate messages with different frequency andwith different numbering while message data packets are processedaccording to the assigned sequence number. For example, if a receivingdevice receives sequence numbers 1, 2, 3, and 5, then the receivingdevice saves message sequence number 5 until it receives sequence number4. The receiving device may also communicate with the sender to indicatethat sequence number 4 was not received and may ask the sender tore-send message sequence number 4. In the meantime, message sequencenumbers 6, 7, and 8 may be queuing up with sequence number 5, waitingfor sequence number 4 to be received. Message queuing can delay tradesas a receiving device waits for what it thinks is a missing message.Further, the sending device may not know what message sequence number 4or 5 is, because the sending device sent a message with sequence number45. Thus, timing, order, efficiency, etc., of messages can be affected.

Message sequence numbering affects a degree of correlation between datasent and data received. If a translation occurs in-line and both sendingand receiving devices are having the same conversation, there is ahigher degree of correlation between what was sent and what wasreceived. With a third party translator, however, message correlation isdisrupted, and, often, the sending party, receiving party, andtranslating party are involved in sorting out and attempting to resolveany miscommunication and/or translation error.

Referring back to the example of FIG. 4, application level data appliesor refers to the content 410 of the message 400, while admin or sessionlevel data impacts or describes the wrapper 420. At the session ornetwork layer, if the sending and receiving devices are processingdifferent sequence numbers, a possibility for error or at leastconfusion is likely. Thus, if the sending device is transmitting asequence of messages according to a first numbering (e.g., 1, 2, 3, 4,etc.), and the receiving device is seeing different sequence numbers(e.g., 45, 50, 55, etc.), no continuity in session level messages isfacilitated between the devices.

In one or more of the disclosed embodiments, the content 410 of themessage 400 contained within the application level data is preserved. Ifthe message wrapper or envelope remains the same (with the possibleexception of the message size), in the view of the sending and receivingdevices, the message packet itself remains the same. Rather thanassembling a new message envelope and effectively starting a new“conversation” or exchange of messages, a message packet can be modifiedin content only, leaving the packer wrapper or envelope untouched(except for updating its size) through the message delivery or routingsession. By opening the message mid-transmission between a sendingdevice and a receiving device and changing the message content accordingto a predefined set of rules (e.g., from FIX dialect 1 to FIX dialect 2,from English to Spanish, etc.), essentially the same message is beingforwarded as part of ongoing communication or conversation betweensending and receiving devices.

For example, as shown in FIG. 5, suppose a sending device 510 hasestablished a first communication session S1, and a receiving device 520has established a second communication session S2, with the third partytranslator 530 forcing the establishment of the separate communicationsessions S1, S2. The sending device 510 has a heartbeat interval of 30seconds. The heartbeat interval provides timing for the device 510 tosend a heartbeat back and forth periodically (e.g., every 30 seconds)with the receiving device 520 to make sure the conversation betweendevices 510, 520 stays alive. In the example, the receiving device 520has a heartbeat interval of 2 seconds. Due to the difference inheartbeat interval between the devices 510, 520 and the introduction ofthe third party translator 530, after 30 seconds, the sending device 510is on sequence #2, and the receiving device 520 is on sequence #15.Based on the disparity in message sequence number, no synchronicity isprovided in the communication between the sending device 510 and thereceiving device 520.

Lost messages, delayed messages, and/or other errors can be difficult todiagnose and remedy. For example, suppose the sending device sends anorder as message sequence #2. When the sending device sends the ordermessage, an order identifier (ID) is undefined because the order messagehas not reached the exchange yet. Inquiries made to determine themessage status are complicated because the order ID known to the tradercan be different than the order ID known to the broker. For example, thetrader identifies the message as having sequence #2, which is thetrader's message sequence number. When the broker looks up messagesequence 2, the message is a heartbeat message because the broker has adifferent series of message sequence numbers than the trader. The brokersees an order message received at sequence #15, but the trader has noteven sent sequence #15 in its numbering scheme yet. Thus, neither thetrading device nor the broker can identify the message and determinewhere the message went.

However, if a single, direct message routing session is established fromthe sending device to the receiving device (e.g., from the tradingdevice to the exchange), then each participating device knows status andlocation throughout the order delivery path. Adjustment in FIX protocolformat is facilitated by tweaks to the application level data, not thesession level data, which is left alone, except for the message size.Even though a message is tweaked to modify the content, the messagereaches its destination and returns, and the sending device candetermine its latency. With two separate lines of communication handingoff to deliver a message, there is no such insight into message deliverytime and latency.

That is, if a separate adapter through which messages can be routed isintroduced, a first FIX client (e.g., a trading device) may not be awareof delays between an adapter and a second FIX client (e.g., an exchange)since message continuity is broken by the presence of the adapter, whichgenerates a second message to the second FIX client based on a firstmessage received at the adapter from the first FIX client. For example,since the trading device message is replaced by a message from theadapter to the exchange (thereby receiving a new sequence number), thetrading device is unaware of when the message gets to the exchange(e.g., the exchange indicates it received message #2, but the tradingdevice thinks it sent message #25 such that the trading device andexchange cannot confirm that the correct message was sent and received).

However, if a message communication session is established directlybetween a trading device and an exchange, then the trading device knowswhen a message from the trading device is received by the exchange,regardless of whether or not the trading device and exchange follow thesame sequence numbering. A low-level packet translator can be providedbetween a first FIX client and a second FIX client to adjust messagecontent without requiring either of the first or second FIX clients tomodify its treatment of the FIX protocol.

For example, a single FIX session can be facilitated between the firstFIX client and the second FIX client using an in-line FIX translator.Thus, one FIX session can be maintained rather than two or more separatebut related FIX sessions, for example. A FIX packet translator residingbetween FIX clients adjusts business content of each message packet pera predefined set of rules. Session-level logic, however, can be leftunchanged by the FIX translator. That is, per the example message 400 ofFIG. 4, the content 410 can be changed while the wrapper 420 remains thesame except possibly for the message size.

In more detail, in a single FIX session, one or more messages are passedfrom one client to another. Each message is divided into one or moredata packets (e.g., TCP/IP data packets). Each packet is associated witha packet identifier and/or sequence number. While a separate, thirdparty translator (e.g., ULLINK) changes the sequence number of a packet,the in-line translator leaves the sequence number of a packet unchanged.An adjustment of a packet sequence number can impact a trading and/orother operation of a trading system. For example, trades can be queuedand processed based on sequence number, and a change in sequence numbercan result in a change in an order of processing of packets (andtherefor messages) for a trade.

In a trade-related (e.g., FIX) message, session-level logic provides anenvelope or wrapper for message content. Using the in-line translator,the original message wrapper and FIX session are maintained while themessage content is adjusted to help ensure communication andunderstanding of messages between the clients. In certain embodiments,the in-line FIX translator has a session context, knows a messagesequence, and knows a format to expect to facilitate message passingrather than having two clients talk through a separate, intermediarysystem.

By maintaining a single conversation or message sequence between devicesand only modifying application level data in a message, a sending devicecan track a message throughout delivery and reply. By tracking a messagesession, the sending device can determine message latency, etc.

An example in-line translator maintains an original message and modifiesone or more fields in the message body without generating or changingthe message header with the possible exception of the message size. Asshown in the example of FIG. 6, a message 610 includes content 612 thatis directed from a sender to a receiver based on a message wrapper 614.Using an in-line FIX translator 620, the message content 612 is modifiedby the in-line translator 620 to produce modified message content 616 inthe message 610. The in-line translator 620 opens the message 610 inmidstream between FIX client devices (e.g., between a trading device andan exchange) to adjust the content 616 and send the message 610 along inthe same wrapper 614 (with the possible exception of updating themessage size) without creating a new message or starting a newconversation.

The in-line translator 620 can be located in a variety of positionswithin a trading network. For example, the translator 620 can be locatedat a high-speed switch with a field programmable gate array (FPGA) toprovide an in-line translation or adjustment of the message 610 as theswitch is passing the message 610 between FIX clients. A hardwiredtranslator provides translation without sacrificing speed, for example.

If a gateway (e.g., gateway 220 a-220 n) is present, the in-linetranslator 620 can be placed on a switch between the gateway and theexchange, for example. In certain examples, a gateway is provided foreach exchange to accommodate exchanges that communicate via FIXdifferently from each other. In certain examples, the in-line translator620 can be provided with a single gateway to accommodate a plurality ofexchanges communicating with a plurality of FIX variations.

For example, FIG. 7 illustrates an example trading system 700 in which agateway 710 is arranged between an exchange 720 and a plurality of FIXclients 730-732 (e.g., trading device 110, 210 a, computing device 300,etc.). An in-line translator 740 is arranged at or near the gateway 710(e.g., on a network transmission switch associated with or forming thegateway 710) to modify message traffic communicated between the one ormore FIX clients 730-732 and the exchange 720 via the gateway 710. Inthe example, rather than arranging a separate gateway for each FIXclient to communicate with the exchange 720, a single gateway 710facilitates communication with the exchange 710 for the plurality ofclients 730-732.

Via the single gateway 710 and corresponding in-line translator 740,communications between the exchange 720 and any of the FIX clients730-732 can be facilitated. In certain examples, a plurality ofexchanges 720 can be similarly interfaced with a plurality of FIXclients 730-732 through the single gateway 710 and in-line translator740. By leaving the session level of a message untouched, a continuoussession is maintained for message delivery while allowing the translator740 to adjust message content at the application level to account fordifferences in syntax, phrasing, format, etc., between FIX versionsemployed by a FIX client 730-732 and the exchange 720.

Rather than providing a specific gateway for each client 730-732 and/orexchange 720, the single gateway 710 provides added flexibility withoutsacrificing speed, tracking, and/or reliability. Translation and/orother adjustment between FIX variants can be facilitated by storing anagreed-upon mapping of terms (e.g., a predefined set of rules, etc.)between one or more FIX variants used by one or more of the FIX clients730-732 and the exchange 720 to communicate, for example.

VI. Example Methods to Dynamically Adjust Message Content

FIG. 8 illustrates a flow diagram of an example method 800 todynamically adjust or translate message packet content without affectinga message packet wrapper. At block 810, a message is generated accordingto a FIX protocol. For example, a trading device generates an ordermessage according to a FIX variant used by a trader. The messageincludes content generated at an application level (e.g., a trade order)according to the FIX protocol (or a variant thereof) and routinginformation or a “wrapper” generated at a session level according to theFIX protocol (or a variant thereof). At block 820, the message is sentaccording to a first message routing session. For example, the tradingdevice used to generate the message transmits the message to an intendedtarget (e.g., an exchange). The target is determined from the wrapper orsession-level information of the message, for example.

At block 830, an in-line translator opens the message. For example, themessage is sent via a gateway or switch which includes an in-linetranslator that examines the content of the message without affectingthe routing session in which the message is sent. At block 840, thein-line translator modifies the content of the message according to apredefined set of rules without affecting the message wrapper with thepossible exception of the message size. For example, the trade order inthe message content can be converted from a trader client's FIX formatto a FIX format employed by the target exchange. The in-line translatorcan affect a quick adjustment of the content without altering themessage wrapper or envelope and without noticeably slowing delivery ofthe message to its intended target (e.g., the exchange).

At block 850, receipt of the message at the target is facilitatedaccording to the first message routing session. For example, theexchange receives the order message from the trading device. Byadjusting the message content without modifying the message sessionlevel information, the sending device (e.g., the trading device) canreceive and understand confirmation of the message delivery. Forexample, if the order message is message number two to the tradingdevice but message number fifteen to the receiving exchange, each of thedevices involved can interpret the message according to its ownmessaging numbering because the message routing session has beenmaintained and unmodified. That is, to the trading device, messagenumber two was delivered, while to the exchange, message number fifteenwas received. By way of contrast, systems that include a translatordevice are required to deal with the disruption of message session datacaused by the intermediary device.

At block 860, the message is processed by the receiving device. Forexample, the exchange processes the message content to facilitate atrade order contained in the message content. The process 800 repeats asmessages are exchanged between devices in a trading system, for example.

FIG. 9 illustrates a block diagram of an example in-line translator 900to facilitate in-line translation or modification of message contentwithout affecting the message wrapper. The example in-line translator900 includes an input module 910, a message processor 920, memory 930,and an output module 940. The input module 910, message processor 920,memory 930, and output module 940 can be implemented in one orcombinations of hardware, firmware, and/or software. For example, one ormore components of the translator 900 can be implemented using an FPGAat a gateway, other network transmission switch, trading device,exchange, etc. In an example, implementing the translator 900 inhardware helps to reduce latency and improve speed versus a softwareimplementation, for example.

The input module 910 receives a data message and routes it to themessage processor 920 to be processed. The message processor 920operates at the application level to map FIX content in the receivedmessage to a format expected by an intended target (e.g., a tradingdevice or exchange) for the message. For example, the memory 930 canstore a dictionary or mapping (e.g., a hardcoded or firmware-enabledmapping, a software dictionary, etc.) from one FIX variant to another(e.g., from a trader's FIX dialect to a FIX dialect used by a marketexchange). Once the message content is adjusted appropriately, theoutput module 940 receives the message and continues the message on itsway to its intended target.

By manipulating only the application level content, delivery informationis maintained at the session level. In contrast, by introducing aseparate third party translator that replaces a first message with atranslated second message, a first message session is terminated and aseparate second session is created, resulting in a loss of continuityand tracking and an increase in delivery time, latency, etc. Byinstalling an in-line component at a trading device, exchange, gateway,high speed switch, etc., a message, which is already passing though thedevice, can be modified transparent to the message and sending and/orreceiving devices, for example. In an example, by providing a hardwareand/or firmware-based translation of message content into a normalizedformat, an order can be sent and routed through a gateway in under onesecond (e.g., approximately 200 microseconds). In-line, applicationlevel translation thereby reduces or minimizes an impact of translationof message latency and response time to complete an order as well asreduces or minimizes erroneous orders and/or other errors resulting fromincorrect translation or understanding of a message by an exchange, forexample.

In certain examples, to accommodate a variety of FIX variants and avariety of preferences, one or more users can be provided withinterfaces and tools to input FIX variant mappings or translations ofterms to be used by the in-line translator 900 (e.g., stored in thememory 930 and referenced by the message processor 920, stored in anexternal storage and referenced by the message processor 920, etc.).Through translation, any number of variants can be accommodated andinternal proprietary formats can be supported while providing atranslation to a more standardized format for an exchange without aplurality of customized, costly, and delay-intensive translation devicesinterfering with message delivery.

Thus, certain embodiments provide dynamic message adaptation at theapplication or message content level while leaving the message's sessionlevel delivery information (e.g., the message's envelope) undisturbed.Certain embodiments maintain a continuity of message delivery fortracking, verification, auditing and/or reliability purposes whilehelping to ensure that a message can be read and understood by anintended target.

Some of the described figures depict example block diagrams, systems,and/or flow diagrams representative of methods that may be used toimplement all or part of certain embodiments. One or more of thecomponents, elements, blocks, and/or functionality of the example blockdiagrams, systems, and/or flow diagrams may be implemented alone or incombination in hardware, firmware, discrete logic, as a set of computerreadable instructions stored on a tangible computer readable medium,and/or any combinations thereof, for example.

The example block diagrams, systems, and/or flow diagrams may beimplemented using any combination of application specific integratedcircuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)), fieldprogrammable logic device(s) (FPLD(s)), discrete logic, hardware, and/orfirmware, for example. Also, some or all of the example methods may beimplemented manually or in combination with the foregoing techniques,for example.

The example block diagrams, systems, and/or flow diagrams may beperformed using one or more processors, controllers, and/or otherprocessing devices, for example. For example, the examples may beimplemented using coded instructions, for example, computer readableinstructions, stored on a tangible computer readable medium. A tangiblecomputer readable medium may include various types of volatile andnon-volatile storage media, including, for example, random access memory(RAM), read-only memory (ROM), programmable read-only memory (PROM),electrically programmable read-only memory (EPROM), electricallyerasable read-only memory (EEPROM), flash memory, a hard disk drive,optical media, magnetic tape, a file server, any other tangible datastorage device, or any combination thereof. The tangible computerreadable medium is non-transitory.

Further, although the example block diagrams, systems, and/or flowdiagrams are described above with reference to the figures, otherimplementations may be employed. For example, the order of execution ofthe components, elements, blocks, and/or functionality may be changedand/or some of the components, elements, blocks, and/or functionalitydescribed may be changed, eliminated, sub-divided, or combined.Additionally, any or all of the components, elements, blocks, and/orfunctionality may be performed sequentially and/or in parallel by, forexample, separate processing threads, processors, devices, discretelogic, and/or circuits.

While embodiments have been disclosed, various changes may be made andequivalents may be substituted. In addition, many modifications may bemade to adapt a particular situation or material. Therefore, it isintended that the disclosed technology not be limited to the particularembodiments disclosed, but will include all embodiments falling withinthe scope of the appended claims.

What is claimed is:
 1. A computing device configured to: receive amessage from a sender device to be sent to a target device, wherein themessage is formatted according to a FIX protocol, the message includingFIX message content and a FIX message wrapper, the FIX message wrapperproviding session and delivery information for the message, and themessage content including trade order information formatted according toa first FIX protocol format; perform in-line translation of the receivedmessage to generate a modified message, wherein to perform the in-linetranslation of the received message, the computing device is configuredto: determine mapping data to translate the message content from thefirst FIX protocol format being used by the sender device to a secondFIX protocol format being used by the target device; use the mappingdata to translate the trade order information in the message contentfrom the first FIX protocol format to the second FIX protocol format togenerate translated trade order information for the modified message;refrain from modifying session and delivery information in the FIXmessage wrapper; and route the modified message to the target devicebased on the delivery information in the FIX message wrapper.
 2. Thecomputing device of claim 1, wherein the in-line translation does notaffect a message routing session.
 3. The computing device of claim 1,wherein the message is composed for processing at an application leveland a session level, the application level affecting the FIX messagecontent, and the session level affecting message identification anddelivery instructions in the FIX message wrapper, wherein the in-linetranslation modifies the FIX message content at the application levelwhile not affecting the identification and delivery instructions at thesession level.
 4. The computing device of claim 1, wherein to refrainfrom modifying session and delivery information in the FIX messagewrapper, the computing device is configured to maintain a messagesequence number for tracking by a sender of the message.
 5. Thecomputing device of claim 1, wherein the sender device using the firstFIX protocol format comprises a client device, and wherein the targetdevice using the second FIX protocol format comprises an electronicexchange.
 6. The computing device of claim 1, wherein the computingdevice is a gateway.
 7. The computing device of claim 1, wherein thecomputing device is a switch.
 8. The computing device of claim 1,wherein the FIX message wrapper is a FIX message envelope.
 9. The systemcomputing device of claim 1, wherein the sender device is a FIX clientdevice.
 10. The system computing device of claim 1, wherein the mappingdata comprises mapping of terms between the first FIX protocol formatand the second FIX protocol format.